/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;

/**
 *
 * @author Carlos
 */
public class EnviarNotas{
    /**
     * Envia un mensaje de correo electrónico
     * @param request servlet request
     * @param response servlet response
     */
    public static void enviarMensaje(String asunto,String mensaje, String destinatario)
    {
        try{

            Properties p = new Properties();
            p.setProperty("mail.smtp.host", "smtp.gmail.com");
            p.setProperty("mail.smtp.starttls.enable", "true");
            p.setProperty("mail.smtp.port", "587");
            p.setProperty("mail.smtp.user", "notasues@gmail.com");
            p.setProperty("mail.smtp.auth", "true");

            //--[ Create the session and create a new mail message
            Session mailSession = Session.getInstance( p );
            Message msg = new MimeMessage( mailSession );
            //--[ Set the FROM, TO, DATE and SUBJECT fields
            msg.setFrom( new InternetAddress( "notasues@gmail.com" ) );
            msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse(destinatario) );
            msg.setSentDate( new Date() );
            msg.setSubject( asunto );
            //--[ Create the body of the mail
            msg.setText( mensaje );
            //--[ Ask the Transport class to send our mail message
            // Lo enviamos.
            Transport t = mailSession.getTransport("smtp");
            t.connect("notasues@gmail.com", "hllplc1841");
            t.sendMessage(msg, msg.getAllRecipients());
            System.out.println("Mensaje enviado a " + destinatario);
            t.close();


        }catch(Exception e){
//            System.out.println(":S");
            e.printStackTrace();
        }
    }

    public static void enviarTxt(String asunto,String mensaje, String destinatario )
    {
         try{

            Properties p = new Properties();
            p.setProperty("mail.smtp.host", "smtp.gmail.com");
            p.setProperty("mail.smtp.starttls.enable", "true");
            p.setProperty("mail.smtp.port", "587");
            p.setProperty("mail.smtp.user", "notasues@gmail.com");
            p.setProperty("mail.smtp.auth", "true");

            //--[ Create the session and create a new mail message
            Session mailSession = Session.getInstance( p );
            Message msg = new MimeMessage( mailSession );
            //--[ Set the FROM, TO, DATE and SUBJECT fields
            msg.setFrom( new InternetAddress( "notasues@gmail.com" ) );


            //Deducir cual es el operador del usuario para enviar
            //un txt via email
            int operador;
            String direccion="";
            operador = obtenerOperador(destinatario);
            switch(operador)
            {
                case 0:
                    System.out.println("Error: Operador no soportado");
                    break;
                case 1:
                    direccion = destinatario + "@sms.claro.com.sv";
                    break;
                case 2:
                    direccion = "503"+destinatario + "@digimensajes.com";
                    break;
                case 3:
                    direccion = destinatario + "@tigo.com.sv";
                    break;
            }


            msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse(direccion) );
            msg.setSentDate( new Date() );
            msg.setSubject( asunto );
            msg.setText( mensaje );
            if(operador!=0){
                // Lo enviamos.
                Transport t = mailSession.getTransport("smtp");
                t.connect("notasues@gmail.com", "hllplc1841");
                t.sendMessage(msg, msg.getAllRecipients());
                System.out.println("Mensaje enviado a " + destinatario);
                t.close();
            }

        }catch(Exception e){
//            System.out.println(":S");
            e.printStackTrace();
        }
    }

    public static int obtenerOperador(String numero)
    {
        /*
         Obtener el operador de acuerdo a la siguiente relacion alfabética:
         *      (0) - Error
         *      (1) - Claro
         *      (2) - Digicel
         *      (3) - Tigo
         */
        int operador = 0;
        String iniciales = numero.substring(0, 2);
        if (iniciales.equalsIgnoreCase("70") || iniciales.equalsIgnoreCase("76"))
        {
            //Claro
            operador = 1;
        }
        else
        {
            if (iniciales.equalsIgnoreCase("72") || iniciales.equalsIgnoreCase("75"))
            {
                //Tigo
                operador = 3;
            }
            else
            {
                if(iniciales.equalsIgnoreCase("73"))
                {

                    operador = 2;
                }
                else
                {
                    if(iniciales.equalsIgnoreCase("74"))
                    {
                        //Examinar otros dos numeros para saber a que
                        //compañia pertenece
                        String discriminante = numero.substring(2, 4);
                        int valorDisc = Integer.parseInt(discriminante);
                        if(valorDisc <= 49)
                        {
                            //Digicel otravez
                            operador = 2;
                        }
                        else
                        {
                            if(valorDisc >= 70)
                            {
                                //Tigo otravez
                                operador = 3;
                            }
                        }
                     }
                    else
                    {
                      //Usar una tabla auxliar
                        int valorNumero = Integer.parseInt(numero.substring(0, 4));
                        if(valorNumero >= 7720 && valorNumero <= 7739 )
                            operador = 3;
                        if(valorNumero >= 7740 && valorNumero <= 7759 )
                            operador = 1;
                        if(valorNumero >= 7760 && valorNumero <= 7779 )
                            operador = 2;
                        if(valorNumero >= 7785 && valorNumero <= 7789 )
                            operador = 3;
                        if(valorNumero >= 7795 && valorNumero <= 7799 )
                            operador = 3;
                        if(valorNumero >= 7805 && valorNumero <= 7809 )
                            operador = 1;
                        if(valorNumero >= 7840 && valorNumero <= 7844 )
                            operador = 1;
                        if(valorNumero >= 7850 && valorNumero <= 7869 )
                            operador = 1;
                        if(valorNumero >= 7870 && valorNumero <= 7949 )
                            operador = 3;
                        if(valorNumero >= 7950 && valorNumero <= 7979 )
                            operador = 2;
                        if(valorNumero >= 7985 && valorNumero <= 7989 )
                            operador = 1;



                    }



                }

            }
        }

        return operador;

    }





}